Проект по А/B-тестированию

Цель проекта:
Провести оценку результатов A/B-теста.
Оценить корректность проведения теста и проанализировать его результаты.
Техническое задание:
  • Название теста: recommender_system_test;
  • Группы: А (контрольная), B (новая платёжная воронка);
  • Дата запуска: 2020-12-07;
  • Дата остановки набора новых пользователей: 2020-12-21;
  • Дата остановки: 2021-01-04;
  • Ожидаемое количество участников теста: 15% новых пользователей из региона EU;
  • Назначение теста: тестирование изменений, связанных с внедрением улучшенной рекомендательной системы;
  • Ожидаемый эффект: за 14 дней с момента регистрации в системе пользователи покажут улучшение каждой метрики не менее, чем на 5 процентных пунктов:
    конверсии в просмотр карточек товаров — событие product_page
    просмотры корзины — product_cart
    покупки — purchase.
Описание данных:
/datasets/ab_project_marketing_events.csv — календарь маркетинговых событий на 2020 год
  • name — название маркетингового события;
  • regions — регионы, в которых будет проводиться рекламная кампания;
  • start_dt — дата начала кампании;
  • finish_dt — дата завершения кампании.
/datasets/final_ab_new_users.csv — все пользователи, зарегистрировавшиеся в интернет-магазине в период с 7 по 21 декабря 2020 года;
  • user_id — идентификатор пользователя;
  • first_date — дата регистрации;
  • region — регион пользователя;
  • device — устройство, с которого происходила регистрация.
/datasets/final_ab_events.csv — все события новых пользователей в период с 7 декабря 2020 по 4 января 2021 года;
  • user_id — идентификатор пользователя;
  • event_dt — дата и время события;
  • event_name — тип события;
  • details — дополнительные данные о событии. Например, для покупок, purchase, в этом поле хранится стоимость покупки в долларах.
/datasets/final_ab_participants.csv — таблица участников тестов.
  • user_id — идентификатор пользователя;
  • ab_test — название теста;
  • group — группа пользователя.
Этапы работы:
  1. Знакомство с данными и предобработка
  2. Оценка корректности теста
  3. Исследовательский анализ
  4. Оценка результатов A/B теста
  5. Общий вывод

Знакомство с данными и их подготовка к исследованию

Загрузим таблицы

Рассмотрим таблицу marketing_events

Приведём столбцы с датой к нужному типу

Таблица marketing_events готова к работе

Рассмотрим таблицу new_users

Приведём столбце с датой к нужному типу

Проверим наличие пропусков и явных дубликатов

Проверим неявные дубликаты

Убираем пользователей зарегестрировавшихся после даты заданной в ТЗ

Таблица new_users готова к работе

Рассмотрим таблицу new_events

Приведём столбец с датой к нужному типу

Проверим наличие пропусков и явных дубликатов

Рассмотрим неявные дубликаты

Посмотрим на пользователя с примером такого дубликата

Убираем пользователей зарегестрировавшихся после даты заданной в ТЗ

В столбце "details", есть пропуски, но они не влияют на дальнейшую работу, так как не для всех событий нужны дополнительные данные.
По столбцам user_id + event_dt, есть дубликаты, но в них выполняется разное событие, поэтому их нельзя считать дубликатом, скорее всего это связано например с автологином, и событие login происходит вместе с событием product_page, так как при переходе на страницу продукта пользователь автоматически авторизуется.
Поэтому таблица new_events готова к работе.

Рассмотрим таблицу participants

Рассмотрим неявные дубликаты

Рассмотрим отдельно пример пользователя

Создадим таблицу с нужным тестом по ТЗ

Убираем пользователей зарегестрировавшихся после даты заданной в ТЗ

Есть неявные дубликаты по пользователям и группам, так как это просто один и тот же пользователь учавствующий в разных тестах, это не является дубликатом. Второй тест было решено удалить из таблицы, так как он не нужен по ТЗ.
Таблица participants готова к работе.

Создадим таблицу с полными данными по нужному тесту

Добавили в основные таблицы данные из таблицы с пользователями учавствующими в тестировании для упрощения дальнейшей работы.
Предобработка завершена.
Данные приведены к нужному типу, произведена проверка пропусков и дубликатов, созданы таблицы с "очищенными" данными по ТЗ.
Создана таблица с полными данными по тесту.

Оценка корректности теста

Создадим таблицу с пользователями по нужному тесту из ТЗ

Проверим период набора пользователей относительно технического задания

Даты набора пользователей соответствуют ТЗ.

Проверим долю участников теста из региона EU согласно ТЗ

Доля участников теста из региона EU относительно всех новых пользователей из региона EU 15% как и прописано в ТЗ.

Проверим динамику набора пользователей в группы и равномерность их распределения

Динамика набора пользователей в группу A схожа с набором в группу B.
В группу А каждый день набиралось больше пользователей, чем в группу B.
Набор пользователей в группы был скачкообразным, пиковые точки набора по дате регистрации были в первый день, в середине периода и в последний день.
Насколько критичен показатель того, что в группе А больше участников выясним позже, путём статистического теста.

Проверим пересечения с конкурирующим тестом

Удаляем пользователей учавствующих в двух тестах из таблицы с участниками теста, тк как из-за особенностей другого теста, данные в тесте из ТЗ могут исказиться.

Проверим есть ли пользователи попавшие в две группы

В "очищенных" таблицах нет пользователей из конкурирующего теста и нет пользователей попавших сразу в две группы тестирования.

Проверим период совершения событий пользователями

Период совершения событий входит в рамки указанные в ТЗ, но заканчивается раньше чем прописано в ТЗ.

Удаляем пользователей которые ни разу не авторизовались.

Так как по ТЗ будет рассматриваться улучшение метрик по событиям выполняемым после авторизации, удаляем пользователей,
которые ни разу не авторизовались, так как по ним нельзя будет посмотреть изменения в метриках.

Удалим события совершенные пользователями более чем через 14 дня с момента регистрации.

Проверим у всех ли пользователей была возможность учавствовать во всех 14 днях тестирования

Посмотрим когда пользователи совершают своё первое событие каждого вида

Все события сделанные после 14 дня тестирования были удалены.
Пользователей, у которых не было возможности принять участие во всех 14 днях тестирования - нет.
Первые события каждого вида в основном совершаются в первый же день.
Вывод о соответствии ТЗ
  • Период набора пользователей в тест соответствует ТЗ
  • В тесте учавствует 15% пользователей от общего количества зарегестрированных пользователей в регионе EU, что соответствует ТЗ. Так же есть часть пользователей из других регионов.
  • Группы набирались скачкообразно, в группу А поступало чуть больше пользователей
  • Пересечений пользователей между группами нет
  • Даты совершения событий совпадают с ТЗ
  • Не все пользователи после регистрации совершали авторизацию и дальнейшие события, такие пользователи были удалены, так как по ним невозможно посчитать конверсию событий, было удалено 821 пользователей группы А и 1490 группы B
  • Были удалены все события сделанные после 14 дневного лайв тайма.
  • Большинство пользователей совершают первое событие каждого типа в первый день лайв тайма
Обработанные данные польностью соответствуют ТЗ. Вероятность получения достоверных результатов А/B теста достаточно высока,
её портит показатель того, что после "чистки" данных, пользователей в группе А(2082) стало почти в 3 раза больше, чем в группе B(706), но этот параметр будет учтён при тестировании, поэтому данные готовы к дальнейшей работе.

Исследовательский анализ

Построим гистограмму распределения количества событий на пользователя в разрезе по группам

Самое частое количество совершаемых событий на пользователя это 4 и 6.
Среднее количество совершаемых событий в группе А больше чем в группе Б на 1.49.
Минимальное количество событий - 1.
Максимальное количество событий - 24.

Построим график динамики количества событий в группах по дням

Динамика количества событий по группам отличается.
В группе B динамика равномерная, без резких скачков и спадом в конце.
В группе А динамика не равномерная, есть скачок с 13 декабря по 21 декабря, в конце наблюдается спад.

Сделаем проверку времени проведения теста с маркетинговыми и другими событиями

Два события попадают в период проведения теста, это Christmas&New Year Promo и CIS New Year Gift Lottery.
На графике выше виден резкий скачок количества событий в группе А, но он не попадает под даты данных событий.
Значит вероятнее всего эти события не влияют на динамику количества событий в тесте.

Построим таблицу со всеми событиями, которые совершили пользователи.

Пронумеруем последовательность логических действий

Построим воронку событий пользователей

Улучшений показателей конверсии в группе B относительно группы A не наблюдается.
В тестовой группе после события "просмотр страницы товара" заметна более стабильная логическая конверсия.
Общий вывод об изменениях
Изменения пользовательской активности в группе B сложно назвать позитивными.
Среднее количество событий на пользователя в группе B меньше на 1.49 чем в группе А.
Распределенее количества событий в группе B равномерное, в группе А есть скачок с 13 по 21 декабря, чтобы понять хорошо это или плохо нужно подробнее разобраться в "природе" этого скачка.
Улучшения показателей конверсии между событиями не наблюдается, конверсия стала более стабильной с шага просмотра товара.

Оценка результатов А/B теста

Оценим разницу долей с помощью z-критерия

Нулевая гипотеза: Между группами А и B нет статистической разницы долей
Альтернативная гипотеза: Между группами А и B есть статистическая разницы долей.

Отвергаем нулевую гипотезу.
Скорее всего существует статистическая разница между долей.
Результаты А/B тестирования неудовлетворительны, ожидаемый эффект не был достигнут.
Но принимать такой результат за пропал не стоит, так как между группами теста существует статистически важная разница.

Общий вывод</h2

Основные выводы из исследовательского анализа:
  • Среднее количество событий на пользователя в группе А больше на 1.49 чем в группе B
  • Среднее значение количества событий на пользователя в группе А 6.89
  • Среднее значение количества событий на пользователя в группе B 5.4
  • Чаще всего пользователи совершали 4 и 6 событий
  • Динамика количества событий по группам отличается.
  • В группе B динамика равномерная, без резких скачков и спадом в конце.
  • В группе А динамика не равномерная, есть скачок с 13 декабря по 21 декабря, в конце наблюдается спад.
  • Есть два маркетинговых события проходящих в период тестирования, но они никак не влияют на дианмику событий
  • Путь пользователей группы B по воронке стал более логичным, но увелечения эффективности конверсии не наблюдается
Оценка результатов А/B теста:
Результаты А/B теста можно считать неудволетворительными, так как не был достигнут ожидаемый эффект в конверсии между событиями. В результате сравнения долей z-криерием, было выявлено что между группами есть статистически важная разница.
Рекомендация:
Путь пользователя по воронке стал более логичным и имеет хороший показатель конверсии на последнем этапе(94%), это можно считать положительным показателем тестируемой группы не смотря на имеющуюся статистически важную разницу между долями. Поэтому можно попробовать провести данный тест повторно, уделив больше внимания граммотному набору групп тестирования. Так же стоит проработать момент, когда пользователи после регистрации не совершают ни одного события во воронке, или же стараться не добавлять таких пользователей в тестирование.